package Cafezam;

public class J19Generic {

	public static void main(String[] args) {
		//고정크기 배열
		Tiger zoo1[]=new Tiger[3]; 
		//호랑이를 가두기 위한 동물원
		Lion zoo2[]=new Lion[3];
		//사자를 가두기 위한 동물원
		Zibra zoo3[]=new Zibra[3];
		//얼룩말을 가두기 위한 동물원
		Animal zoo4[]=new Animal[3];
		//호랑이,사자,얼룩말을 가둘수 있는 동물원
		Object zoo5[]=new Animal[3];
       //		호랑이,사자,얼룩말 뿐만 아니라 언급되지 않는 다른 동물들도 가둘 수 있는 동물원
       //Object 클래스는 모든 클래스의 조상
		zoo1[1]=new Tiger();
		//zoo1[2]=new Zibra(); 오류
		//zoo1은 Tiger만 담을 수 있음
		zoo4[0]=new Tiger();
		zoo4[1]=new Lion();
		zoo4[2]=new Zibra();
    	//	zoo4[1]=new Monkey(); 오류
		//Monkey는 Animal과 상속관계가 아님
		zoo5[0]=new Tiger();
		zoo5[1]=new Monkey();
		
		Animal animal1=zoo4[1];
		//Lion lion1=zoo4[1]; 오류 
		//Animal(부모) 객체를 Lion(자식) 객체에 
		//저장하려면 먼저 downcasting해야 함
		Lion lion1=(Lion)zoo4[1];
		//따라사,downcasting 시
		//명시적으로 변환하려는 자료형을
		//기술하는 것은 다소 귀찮을 수 있음
		
		
	}//main
}//class

class Animal{}
class Tiger extends Animal{}
class Lion extends Animal{}
class Zibra extends Animal{}
class Monkey{}
class Whale{}

